package com.syl.starter.itools.common.annotations;

import com.syl.starter.itools.common.enums.RelevanceTypeEnum;

import java.lang.annotation.*;

/**
 * 关联属性 关联属性优先级高 他是最后生效的
 * bean 转换注解 配合BeanUtils
 * 该注解必须写在要转换的目标bean
 * 如 A -> B  必须写在B上
 * @author syl
 * @create 2018-10-18 15:46
 **/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Relevance {
    /**
     * 来源属性class
     * @return
     */
    Class source();

    /**
     * 当类型为枚举时有效
     * @return
     */
    String value() default "";

    /**
     * 显示字段名称
     * @return
     */
    String fieldName() default "";

    /**
     * 关联属性类型
     * @return
     */
    RelevanceTypeEnum type() default RelevanceTypeEnum.ENUM;

    /**
     * 当属性类型为枚举时有效 为获取枚举的方法
     * @return
     */
    String methodName() default "getEnumBy%s";

}
